package com.tenbit.tbw.ctl;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;

import com.tenbit.tbw.svc.SYS1010SVC;

@Controller
public class SYS1010CTL {
	
	@Autowired
	private SYS1010SVC svc;
	
	private Logger log=Logger.getLogger(this.getClass());
	
//	@RequestMapping("SYS1010M1.do")
	public ModelAndView getCodeBookList(HttpServletRequest request)
	{
		ModelAndView mav = new ModelAndView();
		mav.setViewName("4th_week/SYS1010M1");
		return mav;
	}
	
	
	/**
	  * 분류코드목록 조회
	  * @param   paramMap type:, name: 
	  * @return  Map resultMap:List<SYS1010VO> rows:상세코드 목록, boolean result:결과, String msg:결과 msg
	  */
//	@RequestMapping("SYS1011M1.do")
	@ResponseBody
	public Map<String,Object> getCodeTypeList(HttpServletRequest request){
		log.debug("===================분류코드목록 조회 시작 =================");
		
		Map<String, Object> paramMap=new HashMap<String, Object>();
		Map<String,Object> resultMap= new HashMap<String,Object>();
		
		String type=request.getParameter("type");
		String name=request.getParameter("name");
		
		if(type==null){//파라미터 null값 조정
			type="";
		}
		if(name==null){
			name="";
		}
		
		paramMap.put("type", type);
		paramMap.put("name", name);
		resultMap =svc.getCodeTypeList(paramMap);
		
		log.debug(resultMap);
		log.debug("===================분류코드목록 조회 종료 =================");
		return resultMap;
	}
	
	/**
	  * 코드명으로 상세 코드목록 조회
	  * @param   paramMap codeName:코드명
	  * @return  Map resultMap: List<SYS1010VO> rows:상세코드 목록, boolean result:결과, String msg:결과 msg
	  */
//	@RequestMapping("SYS1012M1.do")
	@ResponseBody
	public Map<String,Object> getDetailList(HttpServletRequest request){
		log.debug("===================코드명으로 상세 코드 목록조회 시작=================");
		
		Map<String, Object> paramMap=new HashMap<String, Object>();
		Map<String,Object> resultMap= new HashMap<String,Object>();
		
		String codeType=request.getParameter("codeType");
		String codeName=request.getParameter("codeName");
		
		if(codeType==null){
			codeType="";
		}
		if(codeName==null){
			codeName="";
		}
		
		paramMap.put("codeType", codeType);
		paramMap.put("codeName", codeName);
		resultMap =svc.getCodeDetailList(paramMap);
		
		log.debug(resultMap);
		log.debug("===================코드명으로 상세 코드 목록조회 종료=================");
		return resultMap;
		
	}
	
	/**
	  * 코드명으로 상세 코드 목록 조회
	  * @param   paramMap codeType:분류코드, codeName:코드명
	  * @return  Map resultMap: List<SYS1010VO> rows:상세코드 목록, boolean result:결과, String msg:결과 msg
	  */
//	@RequestMapping("SYS1013M1.do")
	@ResponseBody
	public Map<String,Object> getNameList(HttpServletRequest request){
		log.debug("===================코드명으로 상세 모드 목록조회 시작 =================");
		
		Map<String, Object> paramMap=new HashMap<String, Object>();
		Map<String,Object> resultMap= new HashMap<String,Object>();
		
		String codeType=request.getParameter("codeType");
		String codeName=request.getParameter("codeName");
		
		if(codeType==null){
			codeType="";
		}
		if(codeName==null){
			codeName="";
		}
		
		paramMap.put("codeType", codeType);
		paramMap.put("codeName", codeName);
		resultMap =svc.getCodeNameList(paramMap);
		
		log.debug(resultMap);
		log.debug("===================코드명으로 상세 모드 목록조회 시작  =================");
		return resultMap;
		
	}
	
	/**
	  * 분류 코드 목록 Insert,Update,Delete
	  * @param   List<SYS1010VO> vo: 분류코드 목록
	  * @return  Map resultMap:boolean result:결과, String msg:결과 msg
	  */
//	@RequestMapping("SYS1014M1.do")
	@ResponseBody
	public Map<String,Object> setCodeTypeInfo(@RequestBody List<Map<String,Object> > list){
		
		log.debug("===================분류코드 목록 Insert,Update,Delete 시작 =================");
		Map<String,Object> resultMap= new HashMap<String,Object>();
		
		log.debug("list 1 :"+ list);
		
		for(int i=0;i<list.size();i++){
			if(list.get(i).get("codeDetail")==null||list.get(i).get("codeDetail")==""){
				list.get(i).put("codeDetail",list.get(i).get("codeType"));
			}
		}
		log.debug("list 2 :"+ list);
		
			resultMap=svc.setCodeBookInfo(list);
		
		log.debug(resultMap);
		log.debug("===================분류코드 목록 Insert,Update,Delete 종료 =================");
		return resultMap;
	}
	
	/**
	  * 코드명으로 상세 코드목록 조회
	  * @param   paramMap codeName:코드명
	  * @return  Map resultMap: List<SYS1010VO> rows:상세코드 목록, boolean result:결과, String msg:결과 msg
	  */
//	@RequestMapping("SYS1015M1.do")
	@ResponseBody
	public Map<String,Object> setCodeDetailInfo(@RequestBody List<Map<String,Object> > list){
		log.debug("===================상세코드 목록 Insert,Update,Delete 시작 =================");
		
		Map<String,Object> resultMap= new HashMap<String,Object>();

		resultMap=svc.setCodeBookDetailInfo(list);
		
		log.debug(resultMap);
		log.debug("===================상세코드 목록 Insert,Update,Delete 종료 =================");
		return resultMap;
	}
}
